/**
 * 首页页面
 * /pages/home/index
 * @author WeChat Mini Program Team
 * @since 2025-08-14
 */

const Router = require('../../utils/router')
const Storage = require('../../utils/storage')
const Logger = require('../../utils/logger')
const Track = require('../../utils/track')
const Auth = require('../../utils/auth')
// 引入相关服务
const { CommunityService, TeacherService, BuddyService, SwapService, UserService } = require('../../services/index')

Page({
  /**
   * 查看更多最新动态
   */
  viewMoreLatest() {
    Track.trackClick('view_more', 'latest')
    Router.switchTab('/pages/community/index')
  },
  /**
   * 页面的初始数据
   */
  data: {
  title: '首页',
  loading: false,
  userInfo: null,
  searchKeyword: '',
  statusBarHeight: 44, // 状态栏高度，会在onLoad中动态获取
  navPaddingTop: 32, // 顶部额外内边距，防止被关闭按钮遮挡
    bannerList: [
      { 
        id: 1, 
        image: '/images/image.png',
        title: '智慧社区服务平台',
        desc: '连接邻里，共享美好生活'
      },
      { 
        id: 2, 
        image: '/images/image.png',
        title: '优质教育资源',
        desc: '专业师资，终身学习'
      },
      { 
        id: 3, 
        image: '/images/image.png',
        title: '便民服务中心',
        desc: '一站式社区服务'
        }
    ],
    categoryList: [],
    
    // 推荐课程数据
    recommendCourses: [],
    
    // 推荐教师数据
    recommendTeachers: [],
    
    recommendList: [
      { 
        id: 1, 
        image: '/images/image.png', 
        title: '党史学习教育专题课程', 
        desc: '深入学习党的二十大精神，传承红色基因'
      },
      { 
        id: 2, 
        image: '/images/image.png', 
        title: '优秀教师风采展示', 
        desc: '展示社区教育优秀师资队伍风采'
      },
      { 
        id: 3, 
        image: '/images/image.png', 
        title: '社区志愿服务活动', 
        desc: '参与社区公益，传递正能量和温暖'
      }
    ],
    activityList: [
      { 
        id: 1, 
        image: '/images/image.png', 
        title: '社区安全教育讲座',
        time: '今日 14:00',
        status: '报名中'
      },
      { 
        id: 2, 
        image: '/images/image.png', 
        title: '亲子运动会',
        time: '本周六',
        status: '即将开始'
      },
      { 
        id: 3, 
        image: '/images/image.png', 
        title: '书法体验营',
        time: '下周一',
        status: '火热报名'
      }
    ]
  },

  /**
   * 登录入口点击
   */
  onLoginTap() {
    // 清除本地登录信息，确保无token
    if (Auth && typeof Auth.clearLogin === 'function') {
      Auth.clearLogin();
    }
    // 跳转到登录页
    Router.navigateTo('/pages/login/index')
  },
  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    Logger.info('Page loaded: /pages/home/index', options)
    Track.trackPageView('/pages/home/index', options)
    
    // 获取系统信息
    this.getSystemInfo()
    
    // 检查登录状态
    this.checkLoginStatus()
    
    // 加载分类数据
    await this.loadCategories()
    
    // 加载首页数据
    this.loadHomeData()
  },

  /**
   * 获取系统信息
   */
  getSystemInfo() {
    let safePadding = 0;
    try {
      const systemInfo = wx.getSystemInfoSync()
      // 兼容顶部有"更多/关闭"按钮的小程序，动态增加安全距离
      // 判断是否在小程序主入口（如微信顶部有胶囊按钮）
      if (systemInfo.platform === 'devtools' || systemInfo.platform === 'ios' || systemInfo.platform === 'android') {
        safePadding = 32; // 经验值，实际可根据胶囊高度微调
      }
      const navPaddingTop = (systemInfo.statusBarHeight || 44) + safePadding;
      this.setData({
        statusBarHeight: systemInfo.statusBarHeight || 44,
        navPaddingTop
      })
    } catch (error) {
      Logger.error('获取系统信息失败', error)
    }
  },

  /**
   * 加载分类数据
   */
  async loadCategories() {
    try {
      // 调用 API 获取根分类
      const categories = await TeacherService.getRootCategories()
      
      // 构建分类列表，包含默认分类
      const categoryList = [
        { id: 'courses', icon: '/images/image.png', title: '精品课程' },
        { id: 'teacher', icon: '/images/image.png', title: '优秀教师' },
        { id: 'community', icon: '/images/image.png', title: '社区服务' },
        { id: 'buddy', icon: '/images/image.png', title: '结伴学习' },
        { id: 'activity', icon: '/images/image.png', title: '社区活动' },
        { id: 'user', icon: '/images/image.png', title: '个人中心' }
      ]
      
      // 如果有API分类数据，可以替换部分分类
      if (categories && categories.length > 0) {
        // 可以根据需要将API分类数据映射到现有分类中
        // 这里保持原有分类结构，API分类主要用于课程筛选
      }
      
      this.setData({ categoryList })
      
    } catch (error) {
      Logger.error('Failed to load categories', error)
      
      // 使用默认分类数据作为降级方案
      const defaultCategoryList = [
        { id: 'courses', icon: '/images/image.png', title: '精品课程' },
        { id: 'teacher', icon: '/images/image.png', title: '优秀教师' },
        { id: 'community', icon: '/images/image.png', title: '社区服务' },
        { id: 'buddy', icon: '/images/image.png', title: '结伴学习' },
        { id: 'activity', icon: '/images/image.png', title: '社区活动' },
        { id: 'user', icon: '/images/image.png', title: '个人中心' }
      ]
      
      this.setData({ categoryList: defaultCategoryList })
    }
  },


  // 全局搜索相关逻辑（已注释，如需恢复请取消注释）
  // /**
  //  * 搜索输入
  //  */
  // onSearchInput(e) {
  //   this.setData({
  //     searchKeyword: e.detail.value
  //   })
  // },

  // /**
  //  * 搜索确认
  //  */
  // onSearchConfirm(e) {
  //   const keyword = e.detail.value.trim()
  //   if (keyword) {
  //     Track.trackSearch(keyword, 'home')
  //     Router.navigateTo('/pages/search/index', { keyword })
  //   }
  // },

  // /**
  //  * 清除搜索
  //  */
  // onSearchClear() {
  //   this.setData({
  //     searchKeyword: ''
  //   })
  // },

  /**
   * Banner点击
   */
  onBannerTap(e) {
    const id = e.currentTarget.dataset.id
    Track.trackClick('banner_tap', 'home', { id })
    // 可根据banner id跳转到对应页面
  },

  /**
   * 推荐更多
   */
  onRecommendMore() {
    Track.trackClick('recommend_more', 'home')
    Router.switchTab('/pages/community/index')
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示首页都强制刷新 userInfo
    const userInfo = Storage.get('user_info') || null;
    this.setData({ userInfo });
    this.checkLoginStatus();
  },

  /**
   * 登录页返回后刷新用户信息
   */
  onTabItemTap() {
    // 进入首页tab时强制刷新 userInfo
    const userInfo = Storage.get('user_info') || null;
    this.setData({ userInfo });
    this.checkLoginStatus();
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    // 优先直接从 Storage 读取 user_info，保证 setData 拿到最新
    const userInfo = Storage.get('user_info') || Auth.getUserInfo() || null;
    if (Auth.isLoggedIn() && userInfo) {
      this.setData({ userInfo });
      // 显示新用户欢迎提示
      if (Auth.isNewUser()) {
        setTimeout(() => {
          wx.showModal({
            title: '欢迎加入',
            content: `欢迎 ${userInfo.wechat_nickname || userInfo.username} 使用智慧社区小程序！`,
            showCancel: false,
            success: () => {
              Auth.clearNewUserFlag();
            }
          });
        }, 1000);
      }
    } else {
      this.setData({ userInfo: null });
    }
  },

  /**
   * 加载首页数据
   */
  async loadHomeData() {
    try {
      this.setData({ loading: true })
      
      // 并发加载各种数据
      const [hotResponse, latestResponse, coursesResponse, teachersResponse] = await Promise.all([
        this.loadHotContent(),
        this.loadLatestContent(),
        this.loadRecommendCourses(),
        this.loadRecommendTeachers()
      ])
      
      this.setData({
        hotList: hotResponse || [],
        latestList: latestResponse || [],
        recommendCourses: coursesResponse || [],
        recommendTeachers: teachersResponse || []
      })
    } catch (error) {
      Logger.error('Failed to load home data', error)
      wx.showToast({ title: '加载失败', icon: 'error' })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 加载推荐课程
   */
  async loadRecommendCourses() {
    try {
      const params = {
        limit: 6,
        status: 'active',
        is_featured: true // 如果API支持推荐标记
      }
      
      const result = await TeacherService.getCourseList(params)
      const courses = Array.isArray(result) ? result : (result.courses || result.data || [])
      
      return courses
    } catch (error) {
      Logger.error('Failed to load recommend courses', error)
      return []
    }
  },

  /**
   * 加载推荐教师
   */
  async loadRecommendTeachers() {
    try {
      const params = {
        limit: 4,
        status: 'active',
        is_featured: true // 如果API支持推荐标记
      }
      
      const result = await TeacherService.getTeacherList(params)
      const teachers = Array.isArray(result) ? result : (result.teachers || result.data || [])
      
      return teachers
    } catch (error) {
      Logger.error('Failed to load recommend teachers', error)
      return []
    }
  },

  /**
   * 加载热门内容
   */
  async loadHotContent() {
    try {
      // TODO: 替换为实际的API调用
      // const response = await CommunityService.getHotContent()
      
      // 模拟热门数据
      return [
        {
          id: 1,
          title: '党史学习教育专题课程',
          description: '深入学习党的二十大精神',
          image: '/images/hot1.jpg',
          type: 'community'
        },
        {
          id: 2,
          title: '优秀教师风采展示',
          description: '展示社区教育优秀师资队伍',
          image: '/images/hot2.jpg',
          type: 'teacher'
        },
        {
          id: 3,
          title: '社区志愿服务活动',
          description: '参与社区公益，传递正能量',
          image: '/images/hot3.jpg',
          type: 'buddy'
        }
      ]
    } catch (error) {
      Logger.error('Failed to load hot content', error)
      return []
    }
  },

  /**
   * 加载最新动态
   */
  async loadLatestContent() {
    try {
      // TODO: 替换为实际的API调用
      // const response = await CommunityService.getLatestContent()
      
      // 模拟最新动态数据
      return [
        {
          id: 1,
          title: '社区安全教育讲座顺利举行',
          description: '本次讲座邀请了专业安全专家，为居民普及安全知识',
          createTime: '2小时前',
          type: 'community',
          typeName: '社区'
        },
        {
          id: 2,
          title: '新增优秀教师加入师资队伍',
          description: '欢迎李老师、王老师加入我们的教育团队',
          createTime: '5小时前',
          type: 'teacher',
          typeName: '教师'
        },
        {
          id: 3,
          title: '结伴学习小组成功组建',
          description: '英语学习小组、书法练习小组现已开始招募',
          createTime: '1天前',
          type: 'buddy',
          typeName: '结伴'
        },
        {
          id: 4,
          title: '闲置物品置换活动火热进行中',
          description: '邻里互助，资源共享，让闲置物品发挥更大价值',
          createTime: '2天前',
          type: 'swap',
          typeName: '置换'
        }
      ]
    } catch (error) {
      Logger.error('Failed to load latest content', error)
      return []
    }
  },

  /**
   * 分类卡片点击
   */
  onCategoryTap(e) {
    const index = e.currentTarget.dataset.index
    const category = this.data.categoryList[index]
    const id = category.id
    Track.trackClick('home_category', 'navigation', { id })
    
    // 根据分类ID跳转到对应页面
    if (id === 'courses') {
      Router.navigateTo('/packageTeacher/pages/courses/list/index')
    } else if (id === 'teacher') {
      Router.navigateTo('/packageTeacher/pages/list/index')
    } else if (id === 'buddy') {
      Router.switchTab('/pages/buddy/index')
    } else if (id === 'user') {
      Router.switchTab('/pages/user/index')
    } else if (id === 'community') {
      Router.switchTab('/pages/community/index')
    } else {
      // 普通页面使用 navigateTo
      let path = '/pages/community/index'
      if (id === 'activity') path = '/pages/community/service/activities/list'
      Router.navigateTo(path)
    }
  },

  /**
   * 推荐课程点击
   */
  onRecommendCourseTap(e) {
    const { id } = e.currentTarget.dataset
    Track.trackClick('home_recommend_course', 'navigation', { course_id: id })
    Router.navigateTo(`/packageTeacher/pages/courses/detail/index?id=${id}`)
  },

  /**
   * 推荐教师点击
   */
  onRecommendTeacherTap(e) {
    const { id } = e.currentTarget.dataset
    Track.trackClick('home_recommend_teacher', 'navigation', { teacher_id: id })
    Router.navigateTo(`/packageTeacher/pages/detail/index?id=${id}`)
  },

  /**
   * 推荐列表点击
   */
  onRecommendTap(e) {
    const id = e.detail.id
    Track.trackClick('home_recommend', 'content', { id })
    // 跳转到详情页，可根据实际业务调整
    Router.navigateTo(`/pages/community/education/good-deeds/detail?id=${id}`)
  },

  /**
   * 活动模块点击
   */
  onActivityTap(e) {
    const id = e.detail.id
    Track.trackClick('home_activity', 'content', { id })
    // 跳转到活动详情页
    Router.navigateTo(`/pages/community/service/activities/detail?id=${id}`)
  },

  /**
   * 活动更多
   */
  onActivityMore() {
    Track.trackClick('home_activity_more', 'content')
    Router.navigateTo('/pages/community/service/activities/list')
  },

  /**
   * 搜索
   */
  onSearch(e) {
    const keyword = e.detail.value
    Track.trackSearch(keyword, 'home')
    Router.navigateTo('/pages/search/index', { keyword })
  },

  /**
   * 清除搜索
   */
  onSearchClear() {
    // 搜索清除逻辑
  },

  /**
   * 热门内容项点击
   */
  onHotItemTap(e) {
    const item = e.currentTarget.dataset.item
    Track.trackClick('hot_item', 'content', { id: item.id })
    
    // 根据类型跳转到不同页面
    this.navigateByType(item.type, item.id)
  },

  /**
   * 最新动态项点击
   */
  onLatestItemTap(e) {
    const item = e.currentTarget.dataset.item
    Track.trackClick('latest_item', 'content', { id: item.id })
    
    // 根据类型跳转到不同页面
    this.navigateByType(item.type, item.id)
  },

  /**
   * 根据类型跳转页面
   */
  navigateByType(type, id) {
    // 根据类型判断是否为 tabBar 页面
    if (type === 'community') {
      Router.switchTab('/pages/community/index')
    } else if (type === 'buddy') {
      Router.switchTab('/pages/buddy/index')
    } else if (type === 'swap') {
      Router.switchTab('/pages/swap/index')
    } else if (type === 'teacher') {
      // 教师详情页是普通页面，可以使用 navigateTo
      Router.navigateTo(`/packageTeacher/pages/detail/index?id=${id}`)
    }
  },

  /**
   * 查看更多热门
   */
  viewMore() {
    Track.trackClick('view_more', 'hot')
    Router.switchTab('/pages/community/index')
  },

  /**
   * 查看更多最新动态
   */
  viewMoreLatest() {
    Track.trackClick('view_more', 'latest')
    Router.switchTab('/pages/community/index')
  },

  /**
   * 页面下拉刷新
   */
  onPullDownRefresh() {
    Promise.all([
      this.loadCategories(),
      this.loadHomeData()
    ]).finally(() => {
      wx.stopPullDownRefresh()
    })
  }
});